疑?不是要用Arduino IDE做開發嗎?
痾...並沒有好嗎
STM32的功能過於強大,受限於Arduino IDE本來就是給新手好上手,專門給Arduino的開發用的。
如果真的想要使用Arduino的環境在STM32上雖然也是可以,引用函式庫也很方便。
但是這樣你就用Arduino就好了啊,幹嘛還特地花錢做跟Arduino也能辦到的事情。
STM32的功能更多,更強。簡單的程式用Arduino IDE寫可能還行,當程式慢慢開始龐大,
管理上可能就不太方便,所以我這裡就介紹STM32支援的 IDE。
那如果想用Arduino IDE的捧油就請自行斟酌囉!
(我這應該算是濫用梗圖)
Arduino 有自己的IDE、開發環境,STM32當然也有
所以我們今天要介紹官方推薦好用的工具
測試我們的板子正不正常,燒錄的方式。
所需的材料有
:-此系列由STM32CUBEIDE編寫。如果你是使用其他任何的IDE,程式仍然可以運行。但是你必須自行編寫一些項目
STM32CubeMX近年來開發STM32比較流行的工具之一,它能幫我們初始化一些設定。
我們可以方便地調用內部 HAL函式庫,開發上便利快速,這工具越來越強大了。
STM32CubeMX初始化設定生成檔案,
我們選用Keil 5 IDE編輯。
Keil是德國一家公司,也是一個微控制器開發平臺,
2005年被ARM公司收購,是目前ARM核心微控制器開發的主流工具。
uVision是Keil公司開發的整合式開發環境IDE,
uVision有uVision2、uVision3、uVision4、uVision5四個版本,目前最新的版本是uVision5。
介面和微軟的Visual C++相似,提供C編譯器,還有便利的除錯工具,
軟體模擬方面也有很強大的功能。因此很多開發ARM的工程師,都對它十分喜歡。
ST-LINK燒錄器,昨天有稍作提到
STM32 ST-LINK Utility本身包含ST-Link驅動。
若你安裝了STM32 ST-LINK Utility,你的ST-Link就不用額外安裝驅動,可以直接使用,比如Keil
STM32 ST-LINK Utility除了可以快速讀取FLASH外,還可快速讀取STM32晶片型號、ID、版本等信息
下載並安裝STM32CubeMX,連結在此選擇最新版本,我目前是6.0.1。
下載完運行.exe安裝,基本一直下一步就行:
開啟STM32CubeMX後,點選 Help → Manage embedded software packages
接著點選STM32Cube MCU Packages ,找到 STM32L0 ,選擇最新版本 1.10.0 打勾後,按下 Install Now ,等待下載與安裝完畢即可
去官網下載Keil MDK Version 5試用版,連結在此
需要填幾個基本資料後就可以下載了 個資不讓你們看XD
下載大力地按下去!
下載完開啟安裝程式
個資還是不讓你們看XD
完成安裝
應該會馬上跳出這個,這是ARM的Pack Installer,會定期幫你更新library
上篇提及的NUCLEO-L053R8開發板上方就是燒錄器,只需要一條mini USB就可以執行燒錄了。先去官方網站下載ST-Link 主程式
下載完就執行它!
原則上應該都是一直按下一步到底
按 NEXT
按 YES
按 NEXT
安裝過程中應該會叫你安裝驅動程式,給它裝下去就對了!
信任並安裝驅動程式
驅動安裝完成!
燒錄器安裝完成!
ST-Link 驅動程式可以在這裡下載,辦個帳號即可下載,不想辦號可以直接填你的姓名和電郵,之後就會把下載連結寄去你信箱。像這樣。
下載完打開en.stsw-link009壓縮檔,執行dpinst_amd64.exe安裝驅動程式
原則上一直下一步就行,中間還會遇到幾個 Driver 問你要不要安裝,記得先勾選左下的選擇信任再安裝。安裝完成後就可以開始連接了。
更新驅動程式之前
記得先把JP5從原本靠左邊E5V的地方差到靠右邊U5V的位置
靠左邊E5V代表供電必須外接電源,此時USB端將不會供電給開發板
靠右邊U5V代表供電不須外接電源,此時USB端將會提供電給開發板
插上USB線(Type-A to Mini-B)一端接主板另一端插電腦上 LD1和LD3應該就會亮喔!
如果沒有調整JP5的位置,LD3是不會亮的,這點必須注意。
JP5調整前-JP5在12位置,靠向E5V
JP5調整後-JP5在23位置,靠向U5V
完成後接上USB線連接電腦,右上LD1、正中間靠左LD3將會發亮,電腦會跳出偵測到裝置的通知
打開剛剛安裝在桌面的ST-LINK
1.點選Target
2.Connect與開發板連接
~這可能會需要一些時間
(注意!連接期間不可按下主板上的RESET鈕,否則會連接失敗!)
如果你跟我一樣跳出錯誤訊息,別緊張可以試著按照提示設置connect under reset的模式,基本可以解決大部分問題。
到Target->Settings,將Mode設置connect under reset的模式,按OK。
看到這個畫面就代表成功連接了!
原廠出貨到第一次使用期間可能燒錄器已經有新的更新了,但你的燒錄器的韌體可能還是舊版本,反正到時候使用他還是會叫你更新,不如一開始就先更新。相對也比較穩定。
1.點選Target
2.Firmware update
Device Connect
連接的當下直到更新結束,更新程式會強制佔有 ST LINK 燒錄器,其他應用程式將無法訪問它直到更新結束。
自動偵測目前韌體的版本和開發環境,以及即將更新的版本,YES大力的按下去!
出現Upgrade is successful就代表更新成功摟!
首先打開STM32CubeMx並建立新的專案
根據你的開發板,選擇晶片編號和開發板。
這邊使用的是STM32L053R8,所以輸入晶片編號:STM32L053R8,LQFP64包裝的晶片就是我們的開發板,左邊星號加入我的最愛
進到我的最愛裡面,然後滑鼠連按兩下選擇的晶片,或是按右邊的Start Project進入設定頁面。
這邊就是你設定的MCU的Pinout的地方了
我們在這邊會決定大部分IO將要拿來做甚麼功能用,在畫面左方勾選需要使用的功能,畫面中央選擇功能輸出的pinout,基本上有兩個一定會用到的功能:
1.RCC(Reset Clock Control),將HSE(High Speed Clock)、LSE(Low Speed Clock)均設為Crystal/Ceramic Resonator,預設會占用PC14、PC15、PH0、PH1
2.SYS中的debug Serial Wire打勾,預設會占用PA13、PA14
接著來到Clock Configuration的地方,在這裡將設定你的MCU的運行速度
在HCLK的地方設定最大頻率32MHz並按下確定,內部會自動演算出合適的配方
HSE指高速外部Clock(一般為8MHz) ,LSE指低速外部Clock(一般為32kHz)
HSI指高速內部Clock(一般為16MHz),LSI指低速內部Clock(一般為65kHz)
剛剛設定RCC的HSE及LSE的主要作用就是Clock部分,因為HSE、LSE是外部頻率
簡單來說Clock信號是從外接來的,如果沒有設定預設會使用內部的HSI、MSI內部頻率。
所以在這裡系統頻率主要是由HSE經過PLL(來源有HSE和HSI/1or4,一般選HSE作為時鐘來源) → PLLCKL(通過設置PLL的倍頻因子,一般8Mx8/2=32MHz,最高32MHz) → 系統時鐘SYSCLK(一般SYSCLK=PLLCLK=32MHz) → HCLK(經由AHB除頻器32M/1=32M得到的結果)最後分到32MHz。
最後來到Configuration看設定了哪些東西,對IO可以做更進階的設定,目前沒有需要做變更,按那個像齒輪的東西直接生成程式碼吧!
1.決定你的專案名稱(名字隨你高興,你自己知道就好,這裡我用BlinkLED)
2.決定你的存放路徑(專案要存哪裡的意思)
3.確認專案資料夾(每一個專案都是一個單獨的資料夾,預設資料夾名稱會是你的專案名稱)
4.選擇用來撰寫的IDE(我們安裝的MDK-ARM V5)
5.按ok生成
直接open project吧!
專案資料夾裡面看起來會是這樣
打開專案後左邊展開資料夾並打開main.c檔案,此時MXcube已經幫你生成好檔案了
因為每次生成檔案為了不把原有user的程式碼蓋過去,程式碼都要寫在每一個USER CODE BEGIN 跟USER CODE END中間,如果沒照規則走,下次再生成檔案時所有不是在USER CODE BEGIN 跟USER CODE END中間的程式都會被覆蓋掉。
/* USER CODE BEGIN */
/* USER CODE END */
接著在 按右鍵選Add New Item to Group 'Application/User'
選擇 C File
Name 輸入: mycodes.c
Location 選擇 Src
按 Add 按鍵
接著在main.c定義void mycodes(void);
函式
main主程式中相同的位置加入mycodes();
// 複製程式碼
#include "main.h"
#include "stm32l0xx_hal.h"
void mycodes(void){
while(1){
}
}
我們自己的code就寫在這個mycodes.c裡面,這樣寫的好處不僅程式碼方便觀看,也不怕重新生成後因為忘記沒寫在begin end裡面被消失
程式部分使用C語言編寫,往後實作都會寫在這個mycodes.c裡面,大致上是這樣,如果之後寫到忘記了也可以回來看看。今天就到這裡結束,下台一鞠躬
- STM32 Nucleo-64 boards (MB1136)資料手冊
https://www.st.com/resource/en/user_manual/dm00105823-stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf- STM32L053R8 datasheet
https://www.st.com/resource/en/datasheet/stm32l053r8.pdf- ARM Mbed官網介紹 - NUCLEO-L053R8
https://os.mbed.com/platforms/ST-Nucleo-L053R8/- STM32 官網介紹 - STM32L053R8
https://www.st.com/en/microcontrollers-microprocessors/stm32l053r8.html#overview
- 此開發板售價在臺幣1000元以下,讀者可於以下網站購得:
https://www.mouser.tw/
https://www.digikey.tw/
這又是後話了
進度有點慢
慢慢來...